/*
 * Copyright (c) 2010 Philip Foulkes <philip.foulkes@gmail.com>
 *
 * This file is free software and is made available under the 
 * terms of the GNU General Public License, version 2, or at your
 * option, any later version
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

#ifndef _MMRP_MAIN_H__
#define _MMRP_MAIN_H__

#include "mrp.h"

/**
 * Indicates to the MAC Service provider that the MAC Service user wishes to receive frames containing the
 * MAC Address indicated in the mac_address parameter as the destination address. The MAC Addresses
 * that can be carried by this parameter do not include the following:
 * d) Any of the Reserved Addresses identified in Table 8-1 or Table 8-2.
 * e) Any of the MRP Application addresses, as defined in Table 10-1.
*/
int mmrp_register_mac_address(u8 mac_address [6]);

/**
 * Indicates to the MAC Service provider that the MAC Service user no longer wishes to receive frames
 * containing the MAC Address indicated in the MAC_ADDRESS parameter as the destination address.
 */
int mmrp_deregister_mac_address(u8 mac_address [6]);

/**
 * Indicates to the MAC Service provider that the MAC Service user has a requirement for any devices that
 * support Extended Filtering Services to forward frames in the direction of the MAC Service user in
 * accordance with the definition of the service requirement defined by the
 * requirement_specification parameter. The values that can be carried by this parameter are as
 * follows:
 * f) Forward All Groups.
 * g) Forward Unregistered Groups.
 */
int mmrp_register_service_requirement(u8 requirement_specification);

/**
 * Indicates to the MAC Service provider that the MAC Service user no longer has a requirement for any
 * devices that support Extended Filtering Services to forward frames in the direction of the MAC Service user
 * in accordance with the definition of the service requirement defined by the
 * requirement_specification parameter. The values that can be carried by this parameter are as
 * follows:
 * h) Forward All Groups.
 * i) Forward Unregistered Groups. 
 */
int mmrp_deregister_service_requirement(u8 requirement_specification);

#endif
